/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Ingresos;
import Controladores.AsignacionciclocarreraJpaController;
import javax.persistence.EntityManagerFactory;
import Entidades.Curso;
import Controladores.CursoJpaController;
import Controladores.TipocursoJpaController;
import Controladores.exceptions.IllegalOrphanException;
import Controladores.exceptions.NonexistentEntityException;
import Entidades.Asignacionciclocarrera;
import Entidades.Tipocurso;
import java.util.logging.Level;
import java.util.logging.Logger;
import Usuarios.conexion;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
/**
 *
 * @author Victor Jose Betnacohurt
 */
public class ICurso 
{
    public ICurso(){
    }
    //procedimiento ingresar creado por Victor Jose Betancohurt
    public void guardar(String nombre,short creditosTeoricos, short creditosPracticos, short peridosSemanales, Boolean extraordinario, String observaciones,Tipocurso idTipoCurso,Asignacionciclocarrera idAsignacionciclocarrera)
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        Curso curso= new Curso();
        CursoJpaController controlador = new CursoJpaController(emf);
        curso.setNombre(nombre);
        curso.setAnulado(false);
        curso.setPeriodosSemanales(peridosSemanales);
        curso.setCreditosteoricos(creditosTeoricos);
        curso.setCreditospracticos(creditosPracticos);
        curso.setObservaciones(observaciones);
        curso.setExtraordinario(extraordinario);
       
        TipocursoJpaController controladorTipo = new TipocursoJpaController(emf);
        Tipocurso tipo= controladorTipo.findTipocurso(idTipoCurso.getIdTipoCurso());
        curso.setTipoCursoidTipoCurso(tipo);
        
        AsignacionciclocarreraJpaController controladorCursoCarrera= new AsignacionciclocarreraJpaController(emf);
        Asignacionciclocarrera cursocarrera= controladorCursoCarrera.findAsignacionciclocarrera(idAsignacionciclocarrera.getIdAsignacionCicloCarrera());
        curso.setAsignacionCicloCarreraidAsignacionCicloCarrera(cursocarrera);
        
        controlador.create(curso);
    }
    //procedimiento modificar creado por Victor Jose Betancohurt
    public void modificarId (Curso curso)
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        CursoJpaController controlador = new CursoJpaController(emf);
        try {
            controlador.edit(curso);
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(ICurso.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ICurso.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ICurso.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    //procedimiento buscar por ID creado por Victor Jose Betancohurt
    public Curso buscarId(int id)
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        CursoJpaController controlador = new CursoJpaController(emf);
        return controlador.findCurso(id);
    }
    //funcion buscar por nombre cerado por Victor Jose Betnaohucr
    public List<Curso> buscarNombre(String nombre)
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        EntityManager em = emf.createEntityManager();
        Query qr;
        qr = em.createNamedQuery("Curso.findByNombre");
        qr.setParameter("nombre", nombre);
        List<Curso> lista = qr.getResultList();
        return lista;
    }
    public List<Curso> mostrarTodo()
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        CursoJpaController controlador = new CursoJpaController(emf);
        return controlador.findCursoEntities();
    }
    public List<Curso> mostrarTodoFalse()
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        EntityManager em = emf.createEntityManager();
        Query qr;
        qr = em.createNamedQuery("Curso.findByAnulado");
        qr.setParameter("anulado", false);
        List<Curso> lista = qr.getResultList();
        return lista;
    }
    public List<Curso> mostrarTodoTrue()
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        EntityManager em = emf.createEntityManager();
        Query qr;
        qr = em.createNamedQuery("Curso.findByAnulado");
        qr.setParameter("Anulado", true);
        List<Curso> lista = qr.getResultList();
        return lista;
    }
    public List<Curso> mostrarTodoFalseExtraordinario()
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        EntityManager em = emf.createEntityManager();
        Query qr;
        qr = em.createNamedQuery("Curso.findByExtraordinario");
        qr.setParameter("Extraordinario", false);
        List<Curso> lista = qr.getResultList();
        return lista;
    }
    public List<Curso> mostrarTodoTrueExtraordinario()
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        EntityManager em = emf.createEntityManager();
        Query qr;
        qr = em.createNamedQuery("Curso.findByExtraordinario");
        qr.setParameter("Extraordinario", true);
        List<Curso> lista = qr.getResultList();
        return lista;
    }
    public String toString(int id)
    {
        Curso curso = this.buscarId(id);
        return curso.toString();
    }
}
